<?php
class Grp_x_ContextoDAO extends GenericDAO  {

	function __construct() {
		$this->tabela["alteracao"] = array(	"id" 	=> 80,
											"nome" 	=> strtolower(substr(get_class(), 0, -3)));
	
		$this->tabela["consulta"]  = array(	"id" 	=> 76,
											"nome" 	=> "vw_" . strtolower(substr(get_class(), 0, -3)));
	}
	
	public function consultarPK($pk) {
		$where = "where contexto = :contexto and grupoid = :grupo";
		return $this->consultar($where, $pk);
	}
	
	public function consultarUsuarioLogado($contextoid = null) {
		$sql = 	"select contextoid id, 			" .
				"		contexto, 				" .
				"		acessoConsulta, 		" .
				"		acessoAlteracao 		" .
				"  from vw_usu_x_contexto u		" .
				" where u.usuarioid = :usuario	" ;
		$params["usuario"] = $_SESSION["usuario"]["id"];
		
		if (!is_null($contextoid)) {
			$sql .= " and contextoid = :contextoid";
			$params["contextoid"] = $contextoid;
		}
		return $this->execQuery($sql, $params);
	}
	
	public function consultarGrupo($grupo) {
		$where = "where grupoid = :grupo";
		$params['grupo'] = $grupo;
		return $this->consultar($where, $params);
	}

	public function inserir($reg = null, $finalizarTransacao = true) {
		$sql =  "insert into grp_x_contexto (grupousuarios, contexto) 		" . 
				"		select g.id,										" .
				"			   c.id											" .
				"		  from grupousuarios g,								" .
				"		  	   contexto c									" .
				"		 where not exists (select * 						" .
				"		 					 from grp_x_contexto x			" .
				"		 					where x.grupousuarios = g.id	" .
				"		 					  and x.contexto = c.id)		" ;		
		return $this->execSQL($sql, null, $finalizarTransacao);
	}
	
	public function excluir($pk, $finalizarTransacao = true) {
		return $this->excluirRegistro($pk, $finalizarTransacao);		
	}
	
	public function excluirGrupo($grupo, $finalizarTransacao = true) {
		$sql = "delete from grp_x_contexto where grupousuarios = :grupo";
		$params['grupo'] = $grupo;
		return $this->execSQL($sql, $params, $finalizarTransacao);
	}
	
	public function alterar($registro, $finalizarTransacao = true) {
		$pk['grupousuarios'] 	= $registro['grupousuarios'];
		$pk['contexto'] 		= $registro['contexto'];
		$reg['acessoConsulta']	= $registro['acessoConsulta'];
		$reg['acessoAlteracao'] = $registro['acessoAlteracao'];
		return $this->alterarRegistro($reg, $pk, $finalizarTransacao);
	}
}
?>